package com.ego.member.factory;

import com.ego.common.constant.MemberConstant;
import com.ego.member.oauth2.Oauth2;
import com.ego.member.oauth2.QqOauth2;
import com.ego.member.oauth2.WeiboOauth2;
import com.ego.member.oauth2.ZfbOauth2;

import java.util.HashMap;
import java.util.Map;

/**
 * @program: ego
 * @description: 工厂+单例
 * @author: KamTang
 * @create: 2022-12-15 14:13
 **/
public class Oauth2LoginFactory {

    /**
     * 登录模式映射
     */
    private static final Map<MemberConstant.LoginMode, Oauth2> OAUTH2_LOGIN_MAP = new HashMap<MemberConstant.LoginMode, Oauth2>(){{
        put(MemberConstant.LoginMode.WEIBO, new WeiboOauth2());
        put(MemberConstant.LoginMode.ZFB, new ZfbOauth2());
        put(MemberConstant.LoginMode.QQ, new QqOauth2());
    }};

    private Oauth2LoginFactory() {
    }

    /**
     * 获取实例
     */
    public static Oauth2 getLoginMode(MemberConstant.LoginMode loginModeEnum) {
        return OAUTH2_LOGIN_MAP.get(loginModeEnum);
    }
}
